package ar.com.tallerdos.smartdinner.model;

import java.io.Serializable;

import ar.com.tallerdos.smartdinner.cocina.R;

import com.google.gson.annotations.Expose;


@SuppressWarnings("serial")
public class Product implements Serializable {
	
	private enum Estados {
		   Pendiente, Comenzado, Terminado, Cancelado;
	}
		
	@Expose
	private Integer id;
	@Expose
	private Integer pedido_id;
	@Expose
	private Integer producto_id;
	@Expose
	private Integer cantidad;
	@Expose
	private Integer precio;
	@Expose
	private String estado;
	@Expose
	private String encargado;
	@Expose
	private String comenzado;
	@Expose
	private String terminado;
	@Expose
	private String entregado;
	@Expose
	private String cancelado;
	@Expose
	private Integer usuario_id_cancel;
	@Expose
	private String comentario;
	@Expose
	private String descripcion;
	@Expose
	private String desc_agregado;
	@Expose
	//private Integer mesa_id;
	private String mesa_id;
	
	private int iconID;

	private int comentarioIcon;
	
	private int agregadoIcon;
	
	private Integer estadoID;
	
	
	public Product(Integer id,String descripcion, String fecha, int iconID, String estado, int cantidad){
		super();
		
		this.id = id;
		this.descripcion = descripcion;
		this.encargado = fecha;
		this.iconID = iconID;
		this.estado = estado;
		this.cantidad = cantidad;
		this.mesa_id = "0";
		
		if(id == -1){
			this.comentario = "No hay pedidos para procesar. Por favor, espere hasta que se realice uno nuevo";
			this.comentarioIcon = R.drawable.ic_comment10;
			this.agregadoIcon = R.drawable.ic_blank;
			this.desc_agregado = "";
			this.estadoID = -1;
			this.estado = "Vacio";
		}
		else{
			switch (Estados.valueOf(estado)) {
			case Comenzado:
				estadoID = 1;
				break;
			case Terminado:
				estadoID = 2;
				break;
			case Cancelado:
				estadoID = 3;
				break;
			default:
				estadoID = 0;
			}
		}
	}
	
	public Product(Integer id,String descripcion, String fecha, String estado, int cantidad,Product prd){
		super();
		this.id = id;
		this.descripcion = descripcion;
		this.encargado = fecha;
		this.estado = estado;
		this.cantidad = cantidad;
		
		
		this.producto_id = prd.producto_id;
		this.pedido_id = prd.pedido_id;
		this.precio = prd.precio;
		this.cancelado = prd.cancelado;
		this.comenzado = prd.comenzado;
		this.terminado = prd.terminado;
		this.usuario_id_cancel = prd.usuario_id_cancel;
		this.comentario = prd.comentario;
		this.mesa_id = prd.mesa_id;
		
		if(prd.desc_agregado != null ){
			this.desc_agregado = prd.desc_agregado;
		}
		
		if(this.comentario == null){
			this.comentarioIcon = R.drawable.ic_blank;
		}
		else{
			if(!this.comentario.equals("") && !this.comentario.equals("null")){
				this.comentarioIcon = R.drawable.ic_agreg30;
			}
			else{
				this.comentarioIcon = R.drawable.ic_blank;
			}
		}
		
		if(desc_agregado == null){
			this.agregadoIcon = R.drawable.ic_blank;
		}
		else{
			if(!desc_agregado.equals("")){
				this.agregadoIcon = R.drawable.ic_agreg8;
			}
			else{
				this.agregadoIcon = R.drawable.ic_blank;
			}
		}
		
		if(fecha.length()>10){
			this.encargado = fecha.substring(11);
		}
		
		switch(Estados.valueOf(estado)) {
	    case Comenzado:
	    	estadoID = 1;
	    	this.iconID = R.drawable.ic_comenzado;
	        break; 
	    case Terminado:
	    	estadoID = 2;
	    	this.iconID = R.drawable.ic_terminado;
	    	break;
	    case Cancelado:
	    	estadoID = 3;
	    	this.iconID = R.drawable.ic_cancelado;
	    	break;
	    default:
	    	estadoID = 0;
	    	this.iconID = R.drawable.ic_pendiente;
		}
	}
	
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public void setFecha(String fecha) {
		this.encargado = fecha;
	}

	public void setIconID(int iconID) {
		this.iconID = iconID;
	}

	public void setEstado(String estado) {
		this.estado = estado;
		
		switch(Estados.valueOf(estado)) {
	    case Comenzado:
	    	estadoID = 1;
	    	this.iconID = R.drawable.ic_comenzado;
	        break; 
	    case Terminado:
	    	estadoID = 2;
	    	this.iconID = R.drawable.ic_terminado;
	    	break;
	    case Cancelado:
	    	estadoID = 3;
	    	this.iconID = R.drawable.ic_cancelado;
	    	break;
	    default:
	    	estadoID = 0;
	        this.iconID = R.drawable.ic_pendiente;
		}
	}
	
	public void setCantidad(int cantidad){
		this.cantidad = cantidad;
	}

	public String getDescripcion(){
		return descripcion;
	}
	
	public String getFecha(){
		return encargado;
	}
	
	public int getIconID(){
		return iconID;
	}
	
	public String getEstado(){
		return estado;
	}

	public Integer getEstadoID(){
		
		if(estadoID == null){
			switch(Estados.valueOf(estado)) {
		    case Comenzado:
		    	estadoID = 1;
		        break; 
		    case Terminado:
		    	estadoID = 2;
		    	break;
		    case Cancelado:
		    	estadoID = 3;
		    	break;
		    default:
		    	estadoID = 0;
			}
		}
		
		return estadoID;
	}
	
	public int getCantidad(){
		return cantidad;
	}
	
	public Integer getProductID(){
		return producto_id;
	}
	
	public Integer getID(){
		return id;
	}
	
	public Integer getPedidoID(){
		return pedido_id;
	}
	
	public int getComentarioIcon(){
		return comentarioIcon;
	}

	public String getEntregado() {
		return entregado;
	}

	public void setEntregado(String entregado) {
		this.entregado = entregado;
	}
	
	public String getComentario(){
		return comentario;
	}
	
	public int getAgregadoICon(){
		return agregadoIcon;
	}
	
	public String getAgregadoDesc(){
		return desc_agregado;
	}

	public void setComentario(String comentario){
		this.comentario = comentario;
		
		if(this.comentario == null){
			this.comentarioIcon = R.drawable.ic_blank;
		}
		else{
			if(!this.comentario.equals("") && !this.comentario.equals("null")){
				this.comentarioIcon = R.drawable.ic_agreg30;
			}
			else{
				this.comentarioIcon = R.drawable.ic_blank;
			}
		}
	}
	
	public void setAgregadoDesc(String agregadoDesc){
		if(agregadoDesc != null ){
			this.desc_agregado = agregadoDesc;
		}
		
		if(desc_agregado == null){
			this.agregadoIcon = R.drawable.ic_blank;
		}
		else{
			if(!desc_agregado.equals("")){
				this.agregadoIcon = R.drawable.ic_agreg8;
			}
			else{
				this.agregadoIcon = R.drawable.ic_blank;
			}
		}

		
	}
	
	public String getMesaID(){
		return mesa_id;
	}
	
	public void setMesaID(String mesa){
		this.mesa_id = mesa;
	}
}

